There are many systems which communicate data using signal transmissions, such as telephone, satellite, and cellular systems, whether wired or wireless. During transmission, interference, also called noise, can corrupt the signal. This occurrence is particularly prevalent in wireless transmissions.
Various techniques have been implemented to ensure data transmitted over signal communication systems can be received free from transmission errors. Such techniques include encoding the data by adding redundant information into the signal transmission. A popular encoding technique is turbo encoding/decoding.
A turbo encoder generates a first set of parity bits for the data—computed using a convolutional code—and a second set of parity bits for a known permutation of the data—also computed using a convolutional code. A block combined of the two parity sets and the data is then transmitted.
The receiver generates an integer for each bit in the data stream reflecting the strength of the received signal for that bit. The integer is a measure of how likely it is that the bit is a 0 or 1. To decode the block of data a turbo decoder uses two parallel decoders, one for each of the parity sets. Each parallel decoder uses the likelihood data as a start point and feeds its results into the other to strengthen the hypothesis of the likelihood of each bit of the data being 0 or 1. After sufficient iterations a block is “decoded”.
However, sometimes significant interference can result in a data block that is deemed to be decoded but still contains a transmission error.
To catch this error and ensure correct transmission of the data block a technique called a HARQ protocol may be combined with the turbo decoder. Using the HARQ protocol, the received block is stored in a HARQ buffer. The block is then processed by the turbo decoder. At the end of the turbo decoding process the data block is CRC-tested (CRC=Cyclic Redundancy Check). If the data block fails this test, the system implementing the HARQ protocol requests retransmission of the whole or part of the block. The values of the bits that are known to be the same in both the first block and the second, retransmitted, block are added together. The resultant block is reprocessed by the turbo decoder. The process of requesting retransmission of the block is repeated until a successful CRC check is obtained, or too many attempts have been made.
To request retransmission, the HARQ protocol can use Chase combining—where the entire block is retransmitted—or incremental redundancy—where a sub-set of bits from the block is transmitted.
There are two existing methods of processing the first block and the second, retransmitted, block.
The first method utilises saturation of values. If the value of the signal for a bit of the block is outside a fixed integer range (for example, between +32 and −32) the value is saturated and only the highest/lowest value of the integer range is recorded. When the second block is received the value of the signal is added to the stored value. If the two combined values are outside the integer range the highest\lowest value of the range is recorded.
The disadvantage of this approach is that if the signal of the first block was strong and the signal of the second block is weak and incorrect, the combined value for the bit may end up being weak which could affect effective decoding by the turbo decoder.
This problem is alleviated by using a larger integer range to store the values for each bit. Unfortunately the side-effect of this is that the HARQ buffer then occupies more memory. Memory usage can be of concern in communications devices, particularly in mobile communications devices.
The second method uses block floating point to store the values. The strength of the bit from the received signal is stored as a floating point number with a portion representing the significance and a portion representing the exponent.
When the second block is received the value of the signal is converted to block floating point and added to the stored value.
The disadvantage with this approach is that floating point values are unsuitable for use by turbo decoders because turbo decoders are most concerned with bits that are on the threshold between one and zero. Floating point representations of data only keep the most significant information of the value of the bit and lose the resolution of values which are close to zero in the integer range.
It is object of the present invention to provide a method for processing data in signal transmissions which maintains the resolution of data for subsequent decoding and reduces memory usage, or at least provides a useful alternative.